#!/usr/bin/env python3
"""
数据库初始化脚本
用于创建数据库和初始数据
"""

from app import app, db, Collection, Category, Tag
from datetime import datetime

def init_database():
    """初始化数据库"""
    with app.app_context():
        # 创建所有表
        db.create_all()
        print("数据库表创建成功")
        
        # 创建默认分类
        default_categories = [
            {'name': '技术', 'description': '技术相关文章和资源'},
            {'name': '生活', 'description': '生活感悟和日常分享'},
            {'name': '学习', 'description': '学习笔记和教程'},
            {'name': '工作', 'description': '工作相关内容和经验'},
            {'name': '娱乐', 'description': '娱乐内容和有趣的东西'}
        ]
        
        for cat_data in default_categories:
            existing = Category.query.filter_by(name=cat_data['name']).first()
            if not existing:
                category = Category(name=cat_data['name'], description=cat_data['description'])
                db.session.add(category)
        
        # 创建默认标签
        default_tags = [
            'Python', 'JavaScript', 'Web开发', '机器学习', '数据库',
            '前端', '后端', '移动开发', '设计', '工具',
            '教程', '文档', '开源', '项目', '经验'
        ]
        
        for tag_name in default_tags:
            existing = Tag.query.filter_by(name=tag_name).first()
            if not existing:
                tag = Tag(name=tag_name)
                db.session.add(tag)
        
        # 创建示例收藏
        sample_collections = [
            {
                'title': 'Flask官方文档',
                'content': 'Flask是一个轻量级的Python Web框架，简单易学，功能强大。',
                'url': 'https://flask.palletsprojects.com/',
                'source': 'GitHub',
                'category_name': '技术',
                'tags': ['Python', 'Web开发', 'Flask', '教程']
            },
            {
                'title': 'Bootstrap 5 组件',
                'content': 'Bootstrap 5提供了丰富的UI组件，可以快速构建响应式网站。',
                'url': 'https://getbootstrap.com/docs/5.0/components/',
                'source': 'GitHub',
                'category_name': '技术',
                'tags': ['前端', 'Bootstrap', 'CSS', 'UI']
            },
            {
                'title': 'Python编程最佳实践',
                'content': '分享Python编程中的一些最佳实践和代码规范。',
                'url': 'https://example.com/python-best-practices',
                'source': '知乎',
                'category_name': '学习',
                'tags': ['Python', '编程', '最佳实践', '经验']
            }
        ]
        
        for coll_data in sample_collections:
            existing = Collection.query.filter_by(title=coll_data['title']).first()
            if not existing:
                # 获取分类
                category = Category.query.filter_by(name=coll_data['category_name']).first()
                
                # 获取标签
                tags = []
                for tag_name in coll_data['tags']:
                    tag = Tag.query.filter_by(name=tag_name).first()
                    if tag:
                        tags.append(tag)
                
                collection = Collection(
                    title=coll_data['title'],
                    content=coll_data['content'],
                    url=coll_data['url'],
                    source=coll_data['source'],
                    category_id=category.id if category else None,
                    tags=tags
                )
                db.session.add(collection)
        
        # 提交所有更改
        db.session.commit()
        print("初始数据创建成功")
        print("默认分类:", [cat.name for cat in Category.query.all()])
        print("默认标签:", [tag.name for tag in Tag.query.all()])
        print("示例收藏:", Collection.query.count(), "条")

if __name__ == '__main__':
    init_database()
